﻿using System;
using System.Collections.Generic;

namespace Progream20
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.{患者：“大夫，我咳嗽得很重。”     大夫：“你多大年记？”     患者：“七十五岁。”     
            //大夫：“二十岁咳嗽吗”患者：“不咳嗽。”     大夫：“四十岁时咳嗽吗？”     
            //患者：“也不咳嗽。”     大夫：“那现在不咳嗽，还要等到什么时咳嗽？}
            //找出第1次出现咳嗽的位置是第几个字符
            string str = "患者：医生我咳嗽的很严重，大夫：你多大年纪了？ 患者：我75岁 大夫：那二十岁咳嗽吗？ " +
                "患者：不咳嗽 大夫：四十岁咳嗽吗？ 患者：也不咳嗽 大夫那现在不咳嗽，要什么时候咳嗽";
            //记录“咳嗽”出现的次数
            int count = 0;
            //定义从那里开始
            int index = 0;
            while ((index = str.IndexOf("咳嗽", index)) != -1)  //indenof指定字符串在此第一次出现的索引位置
            {
                index += "咳嗽".Length;
                count++;
                Console.WriteLine("出现咳嗽在：{0}", index);
            }
            Console.WriteLine("次数：{0}", count);
            //2.将字符串"  hello      world,你  好 世界   !    "
            //两端空格去掉，并且将其中的所有其他空格都替换成一个空格，
            //输出结果为："hello world,你 好 世界 !"。
            string hello = "hello      world,你  好 世界   !   ";
            string msg = hello.Trim();//去掉首尾空格
            //使用split分割字符串，stringSplitOptions枚举去掉空格返回字符串数组类型
            string[] s = msg.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            //在使用字符串join连接参数，它string数据s 用空格连接起来
            string m = string.Join(" ", s);
            Console.WriteLine(m);
            //Console.ReadKey();

            //3.存储用户输入的姓名，回车存储；只要用户不输入‘quit’就可以一直输入。
            //输入quit后打印出所有刚才输入的姓名，统计个数
            Console.WriteLine();
            List<string> list = new List<string>();
            while (true)
            {
                Console.WriteLine("请输入学员姓名，输入quit退出");
                string name = Console.ReadLine();
                if (name != "quit")
                {
                    list.Add(name);
                }
                else
                {
                    break;
                }
            }
            int ii = 0;
            Console.WriteLine("您刚才一共录入了{0}个人的成绩，分别是:", list.Count);
            foreach (string item in list)
            {
                if (item[0] == '王')
                {
                    ii++;
                }
                Console.WriteLine(item);
            }
            Console.WriteLine("姓王的同学的个数一共有{0}个", ii);
            Console.ReadKey();
            //4.请将字符串数组{ "中国", "美国", "巴西", "澳大利亚", "加拿大" }中的内容反转。然后输出反转后的数组。不能用数组的Reverse()方法
            var names=new string[]{ "中国", "美国", "巴西", "澳大利亚", "加拿大" };
            Console.WriteLine("交换前:");
            foreach(var item in names)
            {
                Console.Write(item + " ");
            }
            for(var i=0;i<names.Length/2;i++)
            {
                string tmp = names[i];
                names[i] = names[names.Length - 1 - i];
                names[names.Length - 1 - i] = tmp;
            }
            Console.WriteLine();
            Console.WriteLine("交换后：");
            foreach(var item in names)
            {
                Console.Write(item+" ");
            }
            //5. 用方法来实现：计算两个数的最大值。 扩展：计算任意多个数间的最大值
            Console.WriteLine();
            Console.ReadKey();
            Console.WriteLine("最大值:{0}",GetMax(1, 4, 2, 43, 199, 65));
        }
        public static int GetMax(params int[] nums)
        {
            int max = nums[0];
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > max)
                    max = nums[i];
            }

            return max;
        }
    }
}
